﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

using PMServiceDesk.BusinessLogic;
using PMServiceDesk.DataType;
using PMServiceDesk.Utils.Interfaz;
using PMServiceDesk.Parameters.Constantes;

namespace PMServiceDesk.Web.AppCode
{
    public class TipoPaqueteTrabajoView
    {
        public List<TipoPaqueteTrabajoType> TiposPaqueteTrabajo { get; set; }
        public int TotalRegistros { get; set; }
        public TipoPaqueteTrabajoType TipoPaqueteTrabajo { get; set; }
        public bool NuevoRegistro { get; set; }
    }

    public class TipoPaqueteTrabajoIU
    {
        public static TipoPaqueteTrabajoView Listar(TipoPaqueteTrabajoType registroBusqueda, int paginaActual, int cantidadMostrar, string orderBy)
        {
            TipoPaqueteTrabajoLogic logic = new TipoPaqueteTrabajoLogic();

            TipoPaqueteTrabajoView view = new TipoPaqueteTrabajoView();

            registroBusqueda.ProyectoId = Sesion.Usuario.ProyectoId;

            view.TiposPaqueteTrabajo = logic.CargarExploradorPaginado(registroBusqueda, paginaActual, cantidadMostrar, orderBy);
            view.TotalRegistros = view.TiposPaqueteTrabajo.Capacity;

            return view;
        }

        public static TipoPaqueteTrabajoType Cargar(string id)
        {
            TipoPaqueteTrabajoType t = new TipoPaqueteTrabajoType();

            if (id == null) return t;

            TipoPaqueteTrabajoLogic logic = new TipoPaqueteTrabajoLogic();

            t = logic.CargarPorId(id);

            return t;
        }

        public static TipoPaqueteTrabajoView Grabar(TipoPaqueteTrabajoType registro)
        {
            TipoPaqueteTrabajoView view = new TipoPaqueteTrabajoView();
            view.NuevoRegistro = (registro.Id == "0");

            registro.ProyectoId = Sesion.Usuario.ProyectoId;

            TipoPaqueteTrabajoLogic logic = new TipoPaqueteTrabajoLogic();
            logic.Grabar(registro);

            view.TipoPaqueteTrabajo = registro;

            return view;
        }

        public static string ExportarExcel(TipoPaqueteTrabajoType registroBusqueda, List<GridJSONField> gridFields)
        {
            TipoPaqueteTrabajoLogic logic = new TipoPaqueteTrabajoLogic();

            registroBusqueda.ProyectoId = Sesion.Usuario.ProyectoId;

            List<TipoPaqueteTrabajoType> l = logic.CargarExploradorPaginado(registroBusqueda);

            return InterfazUtils.FileTableHTMLGridJSON(l, gridFields, ArchivoConfig.FileServer, Sesion.Usuario.Usuario, "TiposPaqueteTrabajo", ExtensionesArchivos.Excel2003);
        }
    }

    public class EstadoPaqueteTrabajoView
    {
        public List<EstadoPaqueteTrabajoType> EstadosPaqueteTrabajo { get; set; }
        public int TotalRegistros { get; set; }
        public EstadoPaqueteTrabajoType EstadoPaqueteTrabajo { get; set; }
        public bool NuevoRegistro { get; set; }
    }

    public class EstadoPaqueteTrabajoIU
    {
        public static EstadoPaqueteTrabajoView Listar(EstadoPaqueteTrabajoType registroBusqueda, int paginaActual, int cantidadMostrar, string orderBy)
        {
            EstadoPaqueteTrabajoLogic logic = new EstadoPaqueteTrabajoLogic();

            EstadoPaqueteTrabajoView view = new EstadoPaqueteTrabajoView();

            view.EstadosPaqueteTrabajo = logic.CargarExploradorPaginado(registroBusqueda, paginaActual, cantidadMostrar, orderBy);
            view.TotalRegistros = view.EstadosPaqueteTrabajo.Capacity;

            return view;
        }

        public static EstadoPaqueteTrabajoType Cargar(string id)
        {
            EstadoPaqueteTrabajoType t = new EstadoPaqueteTrabajoType();

            if (id == null) return t;

            EstadoPaqueteTrabajoLogic logic = new EstadoPaqueteTrabajoLogic();

            t = logic.CargarPorId(id);

            return t;
        }

        public static EstadoPaqueteTrabajoView Grabar(EstadoPaqueteTrabajoType registro)
        {
            EstadoPaqueteTrabajoView view = new EstadoPaqueteTrabajoView();
            view.NuevoRegistro = (registro.Id == "0");

            EstadoPaqueteTrabajoLogic logic = new EstadoPaqueteTrabajoLogic();
            logic.Grabar(registro);

            view.EstadoPaqueteTrabajo = registro;

            return view;
        }

        public static string ExportarExcel(EstadoPaqueteTrabajoType registroBusqueda, List<GridJSONField> gridFields)
        {
            EstadoPaqueteTrabajoLogic logic = new EstadoPaqueteTrabajoLogic();

            List<EstadoPaqueteTrabajoType> l = logic.CargarExploradorPaginado(registroBusqueda);

            return InterfazUtils.FileTableHTMLGridJSON(l, gridFields, ArchivoConfig.FileServer, Sesion.Usuario.Usuario, "EstadosPaqueteTrabajo", ExtensionesArchivos.Excel2003);
        }
    }
}